import dayjs from "dayjs";
import 'dayjs/locale/zh-cn';
import type { Station } from "./types/interface";

/**
 * 按模板格式化日期、时间字符串
 * @param dt 
 * @param template 
 * @returns 
 */
export const fmtDate = (dt: string | number | Date | dayjs.Dayjs, template: string = 'YYYY-MM-DD') => {
	dayjs.locale('zh-cn')
	if (dt === undefined || dt === null) return '未知日期';
	return dayjs(dt).format(template)
}

export const randomCoordinate = () => {
	const latitude = (Math.random() * 180) - 90;     // -90 到 90
	const longitude = (Math.random() * 360) - 180;   // -180 到 180
	return { latitude, longitude }
}

export async function withLoadingToast<T>(
	asyncFn: () => Promise<T>,
	loadingTitle = '加载中',
	successTitle = '操作成功',
	failTitle = '操作失败'
): Promise<T | undefined> {
	uni.showLoading({ title: loadingTitle })
	try {
		const result = await asyncFn()
		uni.hideLoading()
		uni.showToast({ title: successTitle })
		return result
	} catch (e) {
		uni.hideLoading()
		uni.showToast({ title: failTitle })
		return undefined
	}
}

// #ifdef H5
export async function checkAudioUrl(url: string): Promise<'m3u8' | 'stream' | 'invalid'> {
	try {
		const res = await fetch(url);
		const contentType = res.headers.get('Content-Type') || '';
		if (contentType.includes('mpegurl')) return 'm3u8';

		// 如果是文本类型再解析内容
		if (contentType.startsWith('text') || contentType.startsWith('application')) {
			const text = await res.text();
			if (text.startsWith('#EXTM3U')) return 'm3u8';
		}

		return 'stream'; // 可能是 mp3 等其他格式
	} catch (e) {
		return 'invalid'; // 网络失败或无效地址
	}
}
// #endif

